package eclipse.client;

import java.awt.*;
import java.util.List;
import com.sun.opengl.util.texture.*;
import eclipse.*;
import eclipse.client.forms.*;
import eclipse.client.threadpool.*;
import eclipse.lib.player.*;
import eclipse.lib.StandardForm;
import eclipse.lib.sockets.*;
import eclipse.lib.graphics.*;
import eclipse.lib.sound.*;
/** Eclipse's Object dump. Anything that the Client uses is stored here. */
public final class Database 
{
	/** Represents the expected lag specified */
	public static LATENCY			lag;
	/** Represents the player's ID */
	public static int				myID = 0;
	/** Represents all of the Players */
	public static Player[]			player;
	/** Represents the surface where OpenGL draws to. */
	public static Container			drawSurface;	
	/** Represents the interface which connects OpenGL to the Client */
	public static GLInterface		glInterface;
	/** Represents the Thread Pool object */
	public static ThreadCache		threadCache;
	/** Represents the Object for the Logo */
	public static int ID_LOGO;
	/** Represents the Object for the Menu */
	public static int ID_MENU;	
	/** true = Running as Applet
	 * false = Running as Application
	 */
	public static boolean			APPLET = false;
	/** Represents the current displayed Menu */
	public static int 				MENUSTATE = Constants.MENUSTATE_SPLASHSCREEN;
	/** Represents the collection of Server Ports */
	public static List	<Object>	SERVERPORT;
	/** Represents the collection of Server IPs */
	public static List	<String>	SERVERIP;
	/** Represents the collection of Server Names */
	public static List	<String>	SERVERNAME;
	/** The number of possible servers */
	public static int 				MAXSERVERS;
	/** Represents the Socket Object */
	public static ClientSocket 		Socket;
	/** Represents the Audio Playback Device */
	public static AudioDevice		audioChannel;
	/** Represents the Player's login username */
	public static String			USERNAME = "";
	/** Represents the Player's login password */
	public static String			PASSWORD = "";	
	/** Represents the path for the Main Menu image */
	public static String 			IMGMAINMENU;
	/** Represents the path for the Login Menu image */
	public static String			IMGLOGIN;
	/** Represents the path for the Character Select Menu image */
	public static String			IMGCHARSELECT;
	/** Represents teh path for the New Account Menu image */
	public static String			IMGNEWACCOUNT;
	/** Represents the path for the "Mirage" Menu image */
	public static String			IMGMIRAGEMENU;
	/** Represents the title for the news. */
	public static String			NEWSTITLE = "";
	/** Represents the body for the news. */
	public static String			NEWSBODY = "";
	/** Represents teh name of the Game */
	public static String			GAME_NAME = "Eclipse";
	/** Represents the path for the tiles */
	public static String			TILEDATABASE;
	/** Represents the path for the sprites */
	public static String			SPRITEDATABASE;
	/** Represents the maximum number of Sprite Sheets */	
	public static int				MAX_SPRITESETS;
	/** Represents the maximum number of Players */
	public static int 				MAX_PLAYERS;
	/** Represents the maximum number of Items */
	public static int 				MAX_ITEMS;
	/** Represents the maximum number of NPCs */
	public static int				MAX_NPCS;
	/** Represents the maximum number of Shops */
	public static int				MAX_SHOPS;
	/** Represents the maximum number of Spells */
	public static int				MAX_SPELLS;
	/** Represents the maximum number of Maps */
	public static int				MAX_MAPS;
	/** Represents the maximum number of Map Items */
	public static int 				MAX_MAP_ITEMS;
	/** Represents the maximum number of Emoticons */	
	public static int				MAX_EMOTICONS;
	/** Represents the maximum number of Elements */
	public static int				MAX_ELEMENTS;
	/** Represents teh maximun number of Classes */
	public static int				MAX_CLASSES;
	/** 
	 * 1 = Paperdoll is on
	 * 0 = Paperdoll is off (any number <> 1)
	 */
	public static int				PAPERDOLL;
	/** Represents the maximum number of scripted spells */
	public static int				MAX_SCRIPTSPELLS;
	/** Represents the level restriction */
	public static int				LEVEL;
	/** Represents the maximum number in a party */
	public static int				MAX_PARTY_MEMBERS;
	/** Represents the maximum number of Tile Sets */
	public static int				MAX_TILESETS;
	public static int 				ID_LAYER[]; 
	/** Represents the Object for the SkyBox */
	public static int				ID_SKYBOX;
	public static float 			CameraX = 0f;
	public static float 			CameraY = 0f;
	public static float				CameraROTY = 0f;
	public static int 				TextureX = 0;
	public static int 				TextureY = 2;
	/** Represents the names for the stats */
	public static String			STAT1, STAT2, STAT3, STAT4;
	/** Represents whether all the data was recieved */
	public static boolean			AllDataReceived = false;
	/** Represents the texture for nothing */
	public static Texture			tBLANK;
	/** Represents teh texture for the Menu block */
	public static Texture			tMENU;
	/** Represents the texture for the Logo */
	public static Texture 			tLogo;
	/** Represents the texture for the Tile Sheets */
	public static Texture 			tTileSheet[];
	/** Represents the texture for the Sprite Sheets */
	public static Texture			tSpriteSheet[];	
	/** Represents the texture for the SkyBox */
	public static Texture			tSkyBox;
	/** Represents the texture for text */
	public static Texture			tFont;
	public static int MAINMENUEXITX, 		MAINMENUEXITY;		//button coordinates
	public static int MAINMENUEXITW, 		MAINMENUEXITH;		//button coordinates
	public static int MAINMENULOGINX, 		MAINMENULOGINY;	
	public static int MAINMENULOGINW, 		MAINMENULOGINH;	
	public static int MAINMENUNEWACCOUNTX,	MAINMENUNEWACCOUNTY;
	public static int MAINMENUNEWACCOUNTH,	MAINMENUNEWACCOUNTW;
		
	public static int LOGINEXITX,			LOGINEXITY;	//Button coordinates
	public static int LOGINEXITW,			LOGINEXITH; //button coordinates
	public static int LOGINLOGINX,			LOGINLOGINY;//Button coordinates
	public static int LOGINLOGINW,			LOGINLOGINH;//Button coordinates	
		
	public static int NEWACCOUNTEXITX,		NEWACCOUNTEXITY;
	public static int NEWACCOUNTEXITW,		NEWACCOUNTEXITH;
	public static int NEWACCOUNTCONFX,		NEWACCOUNTCONFY;
	public static int NEWACCOUNTCONFW,		NEWACCOUNTCONFH;	
			
	public static int 		fpsCount		= 0;
	public static boolean 	RENDER_AS_3D	= false;
	public static boolean 	HIGH_RES		= true;
	public static int 		FPS				= 30;	
		
	public static Login 					Login;
	public static MainMenu 					MainMenu;
	public static StandardForm 				Mirage;
	public static NewAccount				NewAccount;
	public static GLParticlePack			particlePack = new GLParticlePack(1000);
	
	/** Represents anything that moves within the Splash Screen */
	public static float logoSpin = 0f;
}
